#include "widget.h"
#include "ui_widget.h"

//使用槽来定时器需要的头文件
#include <QTimer>
#include <QDateTime>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);


    //不使用槽的定时方式
    //id1 = startTimer(1000);
    //id2 = startTimer(2000);
    //id3 = startTimer(10000);

    //这里创建了一个定时器，并将其溢出信号和更新槽关联起来，最后使用start()函数来开启定时器。
    QTimer *timer = new QTimer(this);
    //关联定时器溢出信号和相应的槽函数
    connect(timer,&QTimer::timeout, this, &Widget::timerUpdate);
    timer->start(1000);
}

Widget::~Widget()
{
    delete ui;
}

//不使用槽的定时方式
void Widget::timerEvent(QTimerEvent *event)
{
   if (event->timerId() == id1) { // 判断是哪个定时器
       ui->label->setText(tr("%1").arg(qrand()%10));
   }
   else if (event->timerId() == id2) {
       ui->label_2->setText(tr("hello world!"));
   }
   else {
       qApp->quit();
   }
}

//使用定时器的信号与槽连接的方式
void Widget::timerUpdate()
{
   //获取系统现在的时间
   QDateTime time = QDateTime::currentDateTime();
   //设置系统时间显示格式
   QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
   //在标签上显示时间
   ui->lineEdit->setText(str);
}
